package com.example.wenhua.service;

import com.example.wenhua.entity.Sc;
import java.util.List;
import java.util.Map;
import java.math.BigDecimal;

/**
 * 选课业务逻辑接口
 */
public interface ScService {
    
    /**
     * 查询所有选课记录（包含学生和课程详细信息）
     */
    List<Map<String, Object>> getAllScRecords();
    
    /**
     * 根据筛选条件查询选课记录
     */
    List<Map<String, Object>> getScRecordsWithFilter(String sno, String cno, String gradeStatus);
    
    /**
     * 根据学号查询选课记录
     */
    List<Sc> getScRecordsBySno(String sno);
    
    /**
     * 根据课程号查询选课记录
     */
    List<Sc> getScRecordsByCno(String cno);
    
    /**
     * 学生选课
     */
    boolean selectCourse(String sno, String cno);
    
    /**
     * 学生退课
     */
    boolean dropCourse(String sno, String cno);
    
    /**
     * 录入/更新成绩
     */
    boolean updateGrade(String sno, String cno, BigDecimal grade);
    
    /**
     * 查询学生各科成绩（包含课程信息）
     */
    List<Map<String, Object>> getStudentGradesBySno(String sno);
    
    /**
     * 查询课程不及格学生名单
     */
    List<Map<String, Object>> getFailStudentsByCno(String cno);
    
    /**
     * 按班级统计不及格人数及比例
     */
    List<Map<String, Object>> getFailStatsByDept();
    
    /**
     * 按班级统计各分数段人数及比例
     */
    List<Map<String, Object>> getGradeRangeStatsByDept();
    
    /**
     * 检查学生是否已选某门课程
     */
    boolean isStudentEnrolled(String sno, String cno);
}